/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.controladores;

import Mproyectos.entidades.GrupoInvestigacion;
import Mproyectos.modelo.FachadaGrupoInvestigacion;
import java.io.Serializable;
import java.util.Collection;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 * Controla el CRUD del Grupo de Investigacion
 */
@ManagedBean(name = "controladorGrupoInvestigacion")
@SessionScoped
public class ControladorGrupoInvestigacion  implements Serializable {

    /**
     * grupo de Investigacion se esta creando o actualizando
     */
    private GrupoInvestigacion grupoInvestigacion;
    /**
     * Fachada de acceso a los datos
     */
    @EJB
    private FachadaGrupoInvestigacion fachadaGrupoInvestigacion;

    /**
     * Constructor vacio
     */
    public ControladorGrupoInvestigacion() {
    }

    /**
     * Devuelve el grupo de Investigacion en creacion o edicion
     *
     * @return grupoInvestigacion a crear o actualizar
     */
    public GrupoInvestigacion getGrupoInvestigacion() {

        // Si el grupo de Investigacion es nullo  crear uno 
        if (grupoInvestigacion == null) {
            grupoInvestigacion = new GrupoInvestigacion();
        }

        // Retorna el grupo de Investigacion actual
        return grupoInvestigacion;
    }

    /**
     * Actualiza el grupo de Investigacion en edicion o creacion
     *
     * @param grupo de Investigacion actual
     */
    public void setGrupoInvestigacion(GrupoInvestigacion grupoInvestigacion) {
        this.grupoInvestigacion = grupoInvestigacion;
    }

    /**
     * Devuelve todos los grupos de Investigacion registrados en el sistema
     *
     * @return Lista de los  grupos de Investigacion
     */
    public Collection<GrupoInvestigacion> getGruposInvestigacion() {
        return fachadaGrupoInvestigacion.listar();
    }

    /**
     * Adiciona a la unidad de persistencia el grupo de Investigacion actual
     *
     * @return Nombre de la pagina despues de crear
     */
    public String crear() {
        // Adiciona el grupo de Investigacion 
        fachadaGrupoInvestigacion.adicionar(getGrupoInvestigacion());
        grupoInvestigacion=null;

        // Se va para la pagina de listar los  grupos de Investigacion
        return "listar";
    }

    /**
     * Elimina el grupo de Investigacion especificado y retorna a la lista
     *
     * @param grupo de Investigacion a eliminar
     * @return Pagina a la quer se devuelve
     */
    public String eliminar(GrupoInvestigacion grupoInvestigacion) {
        fachadaGrupoInvestigacion.eliminar(grupoInvestigacion);
        return "listar";
    }

    /**
     * Asigna el grupo de Investigacion especificado 
     * como el grupo de Investigacion actual y llama a la
     * pagina de actualizar
     *
     * @param grupo de Investigacion a actualizar
     * @return devuelve a la pagina de actualizacion
     */
    public String prepararActualizar(GrupoInvestigacion grupoInvestigacion) {
        // Asigna el grupo de Investigacion seleccionado desde la lista como  el actual 
        this.grupoInvestigacion = grupoInvestigacion;
        return "actualizar";
    }

    /**
     * Actualiza los datos del grupo de Investigacion actual
     *
     * @return devuelve a la lista
     */
    public String actualizar() {
        fachadaGrupoInvestigacion.actualizar(grupoInvestigacion);
        return "listar";
    }

    /**
     * Retorna la fachada de grupo de Investigacion
     *
     * @return Fachada de grupo de Investigacion
     */
    public FachadaGrupoInvestigacion getFachadaGrupoInvestigacion() {
        return fachadaGrupoInvestigacion;
    }
}